import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2023-03-24
 * Time: 22:12
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
//        int sum = 0;
//        int max = Integer.MIN_VALUE;
//        for (int i = 0; i < n; i++) {
//            sum += scanner.nextInt();
//            max = Math.max(max, sum);
//            sum = Math.max(sum, 0);//若连加的值<0,那么直接抛弃前面的所有数字，从下一个重新开始
//        }
//        System.out.println(max);
        //leetcode题解
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
//        int pre = 0;
//        int maxAns = nums[0];
//        for (int num : nums) {
//            pre = Math.max(pre + num, num);
//            maxAns = Math.max(maxAns, pre);
//        }
        //该dp的内存超限
//        int[][] dp = new int[n + 1][n + 1];
//        for (int i = 0; i < dp.length; i++) {
//            for (int j = i + 1; j < dp[0].length; j++) {
//                dp[i][j] = dp[i][j - 1] + nums[j - 1];
//            }
//        }
//        int maxAns = Integer.MIN_VALUE;
//        for (int i = 0; i < dp.length; i++) {
//            for (int j = i + 1; j < dp[0].length; j++) {
//                maxAns = Math.max(maxAns, dp[i][j]);
//            }
//        }
//        System.out.println(maxAns);

        //动态规划dp
        int[] dp = new int[nums.length];
        int maxAns = nums[0];
        dp[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
            dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
            maxAns = Math.max(maxAns, dp[i]);
        }
        System.out.println(maxAns);
    }
}

//class Solution {
//    public int maxSubArray(int[] nums) {
//        int maxAns = Integer.MIN_VALUE;
//        int preSum = 0;
//        int minSum = 0;
//        for (int num : nums) {
//            preSum += num;
//            maxAns = Math.max(maxAns, preSum - minSum);
//            minSum = Math.min(preSum, minSum);
//        }
//        return maxAns;
//    }
//}